package com.wisezone.java1902.d12_conections;

/**
 * 动态数组类 容器，1.存储元素，2.获取元素 3.存储元素个数。
 **/
public class MyArrayList<E> {
	private int caption = 5; // 容量
	private Object[] lists = null;
	private int index; // 数组下标

	/**
	 * 初始化
	 */
	public MyArrayList() {
		lists = new Object[caption];
	}

	/**
	 * 添加元素
	 * 
	 * @param item
	 */
	public void add(E item) {
		// 当存储元素达到容量80%时扩容
		if (index == caption * 0.8) {
			addCaption();
		}
		// 动态添加元素
		lists[index++] = item;
	}

	/**
	 * 扩容 
	 */
	private void addCaption() {
		caption = caption * 2;
		//反射机制
		Object[] newLists = new Object[caption];

		// copy旧数组中元素到新数组
		System.arraycopy(lists, 0, newLists, 0, lists.length);

		lists = newLists;
	}

	/**
	 * 获取元素
	 */
	public E get(int index) {
		return (E) lists[index];
	}

	/**
	 * 存储容量，已经存储的元素个数
	 */
	public int size() {
		return index;
	}

}
